<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>使用let关键字声明变量</title>
</head>

<body>
  <script type="text/javascript">
		/*
			let关键字就是用来声明变量的

			使用let关键字声明的变量具有块级作用域

			在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的

			防止循环变量变成全局变量

			使用let关键字声明的变量没有变量提升

			使用let关键字声明的变量具有暂时性死区特性

		*/

    /* --------let关键字就是用来声明变量的-------- */
    // let a = 10; 
    // console.log(a);  //10

    /* --------使用let关键字声明的变量具有块级作用域-------- */
    // if (true) {
    // 	let b = 20;
    // 	console.log(b) //20
    // 	if (true) {
    // 		let c = 30;
    // 	}
    // 	console.log(c); //c is not  defined
    // }
    // console.log(b)

    /* -------在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的--------- */

    // if (true) {
    // 	let num = 100;
    // 	var abc = 200;
    // }
    // console.log(abc);
    // console.log(num)


    /* -------防止循环变量变成全局变量--------- */
    // for (let i = 0; i < 2; i++) { }
    // console.log(i);


    /*-----使用let关键字声明的变量没有变量提升------*/
    // console.log(a);
    // let a = 100;


    /* -------使用let关键字声明的变量具有暂时性死区特性------- */
    var num = 10
    if (true) {
      console.log(num); //不会向上级作用域找num
      let num = 20; // 变量和块级作用域进行了绑定
    }

    // let三大特点
    // 1. 块级作用域  2. 没有变量提升   3. 暂时性死区

  </script>
</body>

</html>